#pragma once

#include <vector>
#include <string.h>


#include "../../utility/Singleton.h"
#include "../../Utility/Predeclare.h"
#include "../../EngineSetting/EngineSetting.h"

namespace EngineRender {

	class NBRenderEngine 
	{
	public:
		NBRenderEngine();
		virtual ~NBRenderEngine();
		virtual _hr SetUp(EngineCore::EngineProperty& prop,PlatformLayer& platform) = 0;
		virtual _hr Launch() = 0;
		virtual _hr Render() = 0;

		const wchar_t* GetGLName() { return m_RenderLibraryName; };

	protected:

		
		wchar_t* m_RenderLibraryName;
		std::vector<std::wstring>  m_adapterList;

		uint32_t m_frameCountTotal;   //Engine Start to Runtime Total Render Frames

		uint32_t m_swapBufferCount;
		uint32_t m_frameIndex;

		//helper 
	};
}
